package com.bzframework.core.auth.token;


import java.io.Serializable;

/**
 * UserToken 用户token
 */
public interface UserToken extends Serializable {

    /**
     * @return 用户id
     *
     */
    String getUserId();

    /**
     * @return token
     */
    String getToken();

    /**
     * @return 首次请求时间
     */
    String getSignInTime();

    /**
     *
     * @return token类型
     */
    String getType();

    String getLastRequestTime();

    static UserToken of(String token, String userId, String signInTime) {
        return of(userId, token, signInTime, TokenTypeEnum.local.name());
    }

    static UserToken of(String token, String userId, String signInTime, String type) {
        return new SimpleUserToken(token, userId, signInTime, type);
    }

}
